package com.iflytek.controller;

import com.iflytek.mapper.EmpMapper;
import com.iflytek.mapper.UserMapper;
import com.iflytek.pojo.Emp;
import com.iflytek.pojo.User;
import com.iflytek.service.UserService;
import com.iflytek.utils.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {
    // 要想注入，必须在UserServerImpl 类名上面添加@Service注解
    @Autowired
    private UserService userService;
    //  下面是实现的方法
    @RequestMapping("/login")
    // 为了排除隐患
    // 由于可能报no qualify ... 错(就是说明，你没有指定 是使用的哪一个实现类),因此需要加注解进行指明，参数是对应
    // 实现类类名首字母小写即可
    @Qualifier("userServiceImpl")
    @ResponseBody
    //@ResponseBody 让方法返回值变成json 数据，所有前端需要拿到的值都需要封装成json数据，无论是string, 数组，还是集合等
    public String login(User user, HttpSession session) {
        // HttpSession session 对象可以保存用户登录的信息（账号 和 密码等信息）
        User user1 = userService.login(user);
        // 返回跳转页面0 代表登录失败，1代表登录成功
        String flag = "0";
        // 如果user1 不为空，则登录成功
        if(user1 != null){
            flag = "1";


            // 下面是 为了后续的操作！！！
            // 保存用户信息到session.为后面做登陆拦截做准备
            session.setAttribute("userInfo",user1); // 注意这里是拿到返回结果user1
        }
        // 这里注意我们希望它返回的是一个数据，而不是跳转页面
        // 如何避免 springmvc 默认把他当成一个返回的页面进行跳转，而不是一个字符串呢？需要在
        // 该方法上面加上 @ResponseBody注解, 这样springmvc就不会把他当成一个页面进行跳转了
        return flag;
    }
    // 定义方法跳转主页面
    @RequestMapping("/main")
    public String index(){
        return "main";
    }
    // 跳转add 添加员工信息页面,没有问题
    @RequestMapping("/add")
    public String goAdd(){
        return "add";
    }
    // 跳转到edit 编辑员工信息页面
    @RequestMapping("/edit")
    public String goEdit(){
        return "edit";
    }
    // 自定义文本文档编辑器
    @RequestMapping("/editor")
    public String goEditor(){
        return "editor";
    }
    // 跳转搜索员工信息页面
    @RequestMapping("/search")
    public String goSearch(){
        return "search";
    }
    // 使用原生的
    // 查询用户信息
    @RequestMapping("/getUserInfo")
    @ResponseBody
    public List<User> getUserInfo(){
        SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 上面exception
//        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = sqlSession.selectList("findUserInfoByUserName","admin");
        return users;
    }
}

